# -*- coding: utf-8 -*-
from logico.problemas.acciones.IMovible import IMovible
from logico.problemas.acciones.IVisible import IVisible
from logico.problemas.acciones.IImprimible import IImprimible

class Objeto(IMovible, IVisible, IImprimible):
	
	"""
	Inicio de la jerarquia de Herencia. De este objeto se desprenden todos los demas objetos que interactuan en la parte visual del proyecto ABJ.
	@since: 4/14/2011
	@version: 1.0
	"""
	
	__nombre=""
	""" Nombre del objeto """
	
	__peso=0
	""" Peso del objeto """
	
	estaContenido=False
	""" Indica si el objeto se encuentra dentro de algun contenedor """
	
	__PESO_MAXIMO=100000.0
	""" Constante de peso maximo """
	
	def __init__(self, nombre="", imagen="", peso=__PESO_MAXIMO):
		"""
		Constructor
		@type	self: Objeto
		@param	self: referencia al Objeto actual
		
		@type	nombre: string
		@param	nombre: nombre del Objeto.
		
		@type	imagen: string
		@param	imagen: URL de la imagen que lo representa.
		
		@type	peso: int
		@param	peso: variable que permite definir si el Objeto es soportado o no en un contenedor.
		"""
		IImprimible.__init__(self, imagen)
		self.__nombre=nombre
		self.setPeso(peso)
		
			

	def setNombre(self, nombre):
		"""
		Asigna un nuevo nombre al Objeto actual
		@type	self: Objeto
		@param	self: referencia a la Objeto actual
		
		@type	nombre: string
		@param	nombre: nombre del Objeto actual.
		"""
		self.__nombre=nombre.lower()
			
	def setPeso(self, peso):
		"""
		Asigna un nuevo peso al Objeto actual
		@type	self: Objeto
		@param	self: referencia a la Objeto actual
		
		@type	peso: int
		@param	peso: nuevo peso del Objeto actual.
		"""
		if(peso==None):
			self.__peso=self.__PESO_MAXIMO
		else:
			self.__peso=peso

	def getNombre(self):
		"""
		Obtiene el nombre del Objeto actual
		@type	self: Objeto
		@param	self: referencia a la Objeto actual
		"""
		return self.__nombre
			
	def getPeso(self):
		"""
		Obtiene el peso del Objeto actual
		@type	self: Objeto
		@param	self: referencia a la Objeto actual
		"""
		return self.__peso